This application relates to computers and computer systems and further relates to a method and apparatus for visually displaying various aspects of memory.
As computer systems become more complex, it is becoming more difficult for human beings to easily understand and grasp all the intricacies involved in any given computer system.
During execution, a computer system may move units of memory, such as pages or cache lines, between units of hardware. As more complex caching systems are designed and as caching systems begin to have more and more levels, it is becoming more and more difficult for human beings to understand whether a given caching system is operating efficiently for the software executing on the computer system.
Software currently exists to aid a human being in visualizing certain aspects of a computer's memory, such as the performance impact of caching. These conventional software programs, however, display memory using a line-by-line display on a display device. For example, in such a line-by-line display, a pixel representing information about a first unit of memory is displayed on a first line in a first column of a display screen. A pixel representing information about a second unit of memory is displayed on a first line in a second column of the display screen. A pixel representing information about a last unit of memory may be displayed on a last line in a last column of a display screen, and so on. Pixels representing information about intermediate units of memory are displayed, one after the other, on consecutive rows and in consecutive columns within each row (or vice versa in consecutive columns and rows).
The term "locality of memory" refers to the location of data (e.g., variables) within memory in time and space. Accessing a variable closely in time is called "temporal locality." Accessing variables stored physically close together is called "spatial locality." Physical locations in a memory that are close together have a high spatial locality. For example, a variable that is read from close together in time has a high temporal locality. For example, a 49.sup.th memory unit and a 50.sup.th memory unit (such as bits, bytes, words, pages, etc.) that are physically close to each other in a computer memory have a high spatial locality. As another example, if a variable is read twice in quick succession, the variable has a high temporal locality. On modern computer systems, temporal and spatial locality impact performance.
Unfortunately, in conventional line-by-line visualization software, even though a 49.sup.th memory unit is physically contiguous to a 50.sup.th memory unit in the actual memory of the computer, it is entirely possible that the display pixels corresponding to the memory units will be on opposite sides of the display screen. For example, the pixel corresponding to the 49.sup.th memory unit might be the last column in row n, while the pixel corresponding to the 50.sup.th memory unit might be displayed in the first column of row n+1. Because conventional visualization tools do not necessarily show memory units having a high locality as being physically near each other on the display, conventional visualization tools are not ideal for aiding a human being in visualizing how various memory units relate to each other or for visualizing locality.
Another example of conventional visualization software displays memory accesses by address on one axis of a graph and time on the other axis. This method also fails to present data in a way that effectively aids human understanding of the relationships between the data.